#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N=2e5+10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n,a[110][110];
void solve()
{
	cin>>n;
	map<int,int> mp;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n-1;j++)
		{
			cin>>a[i][j];
			if(j==1) mp[a[i][j]]++;
		}
	}

	int mx=0,mx_num=0;//mx首个最多第一个出现,mx_num首个最多出现的个数
	for(auto&[k,v]:mp)
	{
		if(v>mx_num) mx=k,mx_num=v;
	}

	for(int i=1;i<=n;i++)//每一个列都是少一个,原数的第二个数字要组合出n-1个位数的数字只能组合出一种
	{
		if(a[i][1]!=mx) 
		{
			cout<<mx<<" ";
			for(int j=1;j<=n-1;j++)
			{
				cout<<a[i][j]<<(j == n-1 ? '\n' : ' ');
			}
			break;
		}
	}
	
}

int main()
{
	close();
	int T; cin>>T;
	while (T--) solve();
	return 0;
}
//n排列
//有p个n个元素的排列